package reveil;

import java.util.Date;

import modele.Etat;

/**
 * The Class Reveil.
 */
public class Reveil {

	/** The etat. */
	private Etat etat;

	/** Attribut heureReveil. */
	private Date heureReveil;

	/** Attribut heureSonnerie. */
	private Date heureSonnerie;

	/**
	 * Constructeur de reveil.
	 */
	private Reveil() {
		this.setHeureReveil(new Date());
		this.setEtat(Etat.NON_ARME);
	}

	/**
	 * Gets the single instance of Reveil.
	 * 
	 * @return single instance of Reveil
	 */
	public static Reveil getInstance() {
		return new Reveil();
	}

	/**
	 * Accesseur de l'attribut etat.
	 * 
	 * @return etat
	 */
	public Etat getEtat() {
		return etat;
	}

	/**
	 * Modificateur de l'attribut etat.
	 * 
	 * @param etat
	 *            the new etat
	 */
	public void setEtat(Etat etat) {
		this.etat = etat;
	}

	/**
	 * Accesseur de l'attribut heure reveil.
	 * 
	 * @return heure reveil
	 */
	public Date getHeureReveil() {
		return heureReveil;
	}

	/**
	 * Modificateur de l'attribut heure reveil.
	 * 
	 * @param heureReveil
	 *            the new heure reveil
	 */
	private void setHeureReveil(Date heureReveil) {
		this.heureReveil = heureReveil;
	}

	/**
	 * Accesseur de l'attribut heure sonnerie.
	 * 
	 * @return heure sonnerie
	 */
	public Date getHeureSonnerie() {
		return heureSonnerie;
	}

	/**
	 * Modificateur de l'attribut heure sonnerie.
	 * 
	 * @param heureSonnerie
	 *            the new heure sonnerie
	 */
	public void setHeureSonnerie(Date heureSonnerie) {
		this.heureSonnerie = heureSonnerie;
	}

	public void armerReveil() {
		this.setEtat(Etat.EN_ATTENTE_DECLENCHEMENT);
	}

	public void desarmerReveil() {
		this.setEtat(Etat.NON_ARME);
	}

	public void apres1mn() {
		this.setEtat(Etat.EN_REPIT);
	}

	public void apres15mn() {
		this.setEtat(Etat.EN_SONNERIE);
	}

	public void mettreEnRepit() {
		this.setEtat(Etat.EN_REPIT);
	}

	public void whenHcHs() {
		this.setEtat(Etat.EN_SONNERIE);
	}

}
